import request from '@/http/http'

//获取角色列表参数接口
export interface RoleListParams {
    RoleName?: string  // 可选参数
    pageIndex: number  // 页码
    pageSize: number   // 每页大小
}

// 角色列表项类型
export interface RoleItem {
    RoleId: number
    RoleName: string
    Description: string
    IsEnabled: boolean
    DepartmentName: string
    MemberCount: number
    CreateTime?: string  // 可能存在的创建时间字段，设为可选
}

// 角色列表响应数据结构
export interface RoleListData {
    TotalCount: number
    TotalPage: number
    Data: RoleItem[]
}

// 新增角色请求参数接口
export interface AddRoleParams {
    RoleName: string    // 角色名称
    Description: string // 角色描述
    IsEnabled: boolean  // 是否启用
    DeptId: number      // 部门ID
}

// 更新角色请求参数接口
export interface UpdateRoleParams {
    RoleId: number       // 角色ID
    RoleName: string     // 角色名称
    Description: string  // 角色描述
}

// 获取角色列表
export const getRoleList = async (params: RoleListParams) => {
    return request({
        url: 'BaseDataReadAPI/Role/GetRoleList',
        method: 'GET',
        params
    })
}

// 新增角色
export const addRole = async (data: AddRoleParams) => {
    return request({
        url: 'BaseDataWriteAPI/Role/AddRole',
        method: 'POST',
        data
    })
}

// 更新角色信息
export const updateRole = async (data: UpdateRoleParams) => {
    return request({
        url: 'BaseDataWriteAPI/Role/UpdateRole',
        method: 'put',
        data
    })
}

// 删除角色
export const deleteRole = async (roleId: number) => {
    return request({
        url: 'BaseDataWriteAPI/Role/DeleteRole',
        method: 'DELETE',
        params: { roleId: roleId }
    })
}

// 设置角色权限参数接口
export interface SetRolePermissionParams {
    RoleId: number        // 角色ID
    PermissionIds: string[] // 权限ID列表
}

// 设置角色权限
export const setRolePermission = async (data: SetRolePermissionParams) => {
    return request({
        url: 'BaseDataWriteAPI/Permission/ModifyRolePermissions',
        method: 'POST',
        data
    })
}
// 添加角色成员参数接口
export interface AddRoleMemberParams {
    RoleId: number    // 角色ID
    UserIds: number[] // 用户ID列表
}

// 添加角色成员
export const addRoleMembers = async (data: AddRoleMemberParams) => {
    return request({
        url: 'BaseDataWriteAPI/Role/AddRoleMembers',
        method: 'POST',
        data
    })
}

// 获取角色成员列表参数接口
export interface GetRoleMembersParams {
    RoleId: number      // 角色ID
    Keyword?: string    // 搜索关键词
    pageIndex: number   // 页码
    pageSize: number    // 每页大小
}

// 角色成员项类型
export interface RoleMemberItem {
    UserId: number
    UserName: string
    RealName: string
    Phone: string
    Department: string
}

// 角色成员列表响应数据结构
export interface RoleMemberListData {
    TotalCount: number
    TotalPage: number
    Data: RoleMemberItem[]
}

// 获取角色成员列表
export const getRoleMembers = async (params: GetRoleMembersParams) => {
    return request({
        url: 'BaseDataReadAPI/Role/GetRoleMembers',
        method: 'GET',
        params
    })
}

// 设置角色状态参数接口
export interface SetRoleStatusParams {
    RoleId: number    // 角色ID
    IsEnabled: boolean // 是否启用
}

// 设置角色状态
export const setRoleStatus = async (data: SetRoleStatusParams) => {
    return request({
        url: 'BaseDataWriteAPI/Role/UpdateStateRole',
        method: 'PUT',
        params: {
            roleId: data.RoleId
        }
    })
}






// 权限项类型定义
export interface PermissionItem {
    PermissionId: number
    DisplayName: string
    Category: string
    IsGranted: boolean
    Children?: PermissionItem[]
}



